/**
 * streamServer.js - 使用可读流把 data.txt 的内容响应到浏览器
 * 要求：
 * 1) 创建服务监听 8081 端口
 * 2) 客户端访问 http://localhost:8081/ 时，读取同目录下 data.txt
 * 3) 使用 fs.createReadStream() 将文件内容以流的方式写回浏览器
 */

const http = require('http');
const fs = require('fs');
const path = require('path');

const port = 8081;
const dataFile = path.join(__dirname, 'data.txt');

const server = http.createServer((req, res) => {
  // 仅处理根路径，其它路径返回 404
  if (req.url !== '/') {
    res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
    res.end('404 Not Found');
    return;
  }

  // 设置响应头为文本，utf-8 编码
  res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });

  // 创建可读流并直接管道到响应
  const readStream = fs.createReadStream(dataFile, { encoding: 'utf8' });

  // 错误处理：如果文件不存在或其它读错误
  readStream.on('error', (err) => {
    res.statusCode = 500;
    res.end('读取文件失败: ' + err.message);
  });

  readStream.pipe(res);
});

server.listen(port, () => {
  console.log(`流式服务已启动：http://localhost:${port}/`);
  console.log(`请确保 ${dataFile} 存在并包含要展示的内容`);
});


